﻿using System.Collections.Generic;
using System.Web.Mvc;
using TheBullysStore.Models;
using TheBullysStore.Models.ModuloAdministracion.Edificio;
using TheBullysStore.Models.ModuloServicios.ContratoPreventivo;
using TheBullysStore.Models.ModuloServicios.MantenimientoPreventivo;
using log4net;
using System;

namespace TheBullysStore.Controllers
{
    public class MantenimientoPreventivoController : Controller
    {
        //
        // GET: /MantenimientoPreventivo/
        private static ILog log = LogManager.GetLogger(typeof(MantenimientoPreventivoController));
        private TheBullysStoreDB db = new TheBullysStoreDB();
        MantenimientoPreventivoFacade mantenimientoPreventivoFacade = new MantenimientoPreventivoFacade();
        ContratoPreventivoFacade contratoPreventivoFacade = new ContratoPreventivoFacade();
        ContratoPreventivoDAO contratoPreventivoDAO = new ContratoPreventivoDAO();
        EdificioDAO edificioDAO = new EdificioDAO();
        EdificioFacade edificioFacade = new EdificioFacade();

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult MantenimientoPreventivo()
        {
            return View();
        }

        public ActionResult RegistrarMantenimientoPreventivo()
        {
            return View();
        }

        public ActionResult BuscarMantenimientoPreventivo()
        {
            return View();
        }


        [HttpPost]
        public JsonResult registrarMantenimientoPreventivo(MantenimientoPreventivoBean mantenimientoPreventivo)
        {
            try
            {
                string conexion = mantenimientoPreventivoFacade.RegistrarMantenimientoPreventivo(mantenimientoPreventivo);

                if (conexion == "Bien")
                {
                    return Json(new { me = "Se ingreso correctamente el Mantenimiento Preventivo" });
                }
                else
                {
                    return Json(new { me = "Existe un error en registrar Mantenimiento Preventivo" });
                }
            }
            catch (Exception ex) {
                log.Error("registrarMantenimientoPreventivo - GET(EXCEPTION):", ex);
                return Json(new { me = "Ocurrió un error al registrar" });
            }
        }

        [HttpPost]
        public JsonResult buscarContratoPreventivo(ContratoPreventivoBean contratoPreventivo)
        {
            try
            {
                List<ContratoPreventivoBean> ListaContratoPreventivo = contratoPreventivoFacade.ListarContratoPreventivo2(contratoPreventivo);
                return Json(new { ListaContratoPreventivo });
            }
            catch (Exception ex) {
                log.Error("buscarContratoPreventivo - GET(EXCEPTION):", ex);
                return Json(new { ListaContratoPreventivo = "Ocurrió un error al buscar" });
            }
        }

        [HttpPost]
        public JsonResult buscarMantenimientoPreventivo(MantenimientoPreventivoBean mantenimientoPreventivo)
        {
            try
            {
                List<MantenimientoPreventivoBean> ListaMantenimientoPreventivo = mantenimientoPreventivoFacade.ListarMantenimientoPreventivo(mantenimientoPreventivo);
                return Json(new { ListaMantenimientoPreventivo });
            }
            catch (Exception ex) {
                log.Error("buscarMantenimientoPreventivo - GET(EXCEPTION):", ex);
                return Json(new { ListaContratoPreventivo = "Ocurrió un error al buscar" });
            }
        }

        [HttpPost]
        public JsonResult modificarMantenimientoPreventivo(MantenimientoPreventivoBean mantenimientoPreventivo)
        {
            try
            {
                string conexion = mantenimientoPreventivoFacade.modificarMantenimiento(mantenimientoPreventivo);

                if (conexion == "Bien")
                {
                    return Json(new { me = "Se modificó correctamente el " + mantenimientoPreventivo.IdMantenimientoPreventivo });
                }
                else
                {
                    return Json(new { me = conexion });
                }
            }
            catch (Exception ex) {
                log.Error("modificarMantenimientoPreventivo - GET(EXCEPTION):", ex);
                return Json(new { me = "Ocurrió un error al modificar" });
            }
        }

        [HttpPost]
        public JsonResult cargarMantenibles(ContratoPreventivoBean contrato)
        {
            try
            {
                List<ContratoPreventivoBean> listaMantenimientos = contratoPreventivoFacade.ListarMantenimientos(contrato);
                return Json(new { listaMantenimientos });
            }
            catch (Exception ex)
            {
                log.Error("cargarMantenibles - GET(EXCEPTION):", ex);
                return Json(new { listaMantenimientos = "Ocurrió un error al buscar" });
            }
        }


        [HttpPost]
        public JsonResult cargarTodosMantenibles(ContratoPreventivoBean contrato)
        {
            try
            {
                List<ContratoPreventivoBean> listaTodosMantenimientos = contratoPreventivoDAO.ListarTodosMantenimientos(contrato);
                return Json(new { listaTodosMantenimientos });
            }
            catch (Exception ex)
            {
                log.Error("cargarTodosMantenibles - GET(EXCEPTION):", ex);
                return Json(new { listaTodosMantenimientos = "Ocurrió un error al buscar" });
            }
        }


        [HttpPost]
        public JsonResult cargarProveedores(ContratoPreventivoBean contrato)
        {
            try
            {
                List<ContratoPreventivoBean> listaProveedores = contratoPreventivoDAO.ListarProveedores(contrato);
                return Json(new { listaProveedores });
            }
            catch (Exception ex)
            {
                log.Error("cargarProveedores - GET(EXCEPTION):", ex);
                return Json(new { listaProveedores = "Ocurrió un error al buscar" });
            }
        }

        [HttpPost]
        public JsonResult cargarEdificios(EdificioBean edificio)
        {
            try
            {
                List<EdificioBean> listaEdificio = edificioFacade.Listaredificio(edificio);
                return Json(new { listaEdificio });
            }
            catch (Exception ex)
            {
                log.Error("cargarEdificios - GET(EXCEPTION):", ex);
                return Json(new { listaEdificio = "Ocurrió un error al buscar" });
            }
        }

        [HttpPost]
        public JsonResult todosMisMantenibles(string nombremantenible)
        {
            try
            {
                List<ContratoPreventivoBean> listaTodosMisMantenibles = contratoPreventivoDAO.listaTodosMisMantenibles(nombremantenible);
                return Json(new { listaTodosMisMantenibles });
            }
            catch (Exception ex)
            {
                log.Error("todosMisMantenibles - GET(EXCEPTION):", ex);
                return Json(new { listaTodosMisMantenibles = "Ocurrió un error al buscar" });
            }
        }


        [HttpPost]
        public JsonResult eliminarMantenimientoPreventivo(MantenimientoPreventivoBean mantenimiento)
        {
            try
            {
                string conexion = mantenimientoPreventivoFacade.eliminarMantenimientoPreventivo(mantenimiento);

                if (conexion == "Bien")
                {
                    return Json(new { me = "Se eliminó correctamente + " + mantenimiento.IdMantenimientoPreventivo });
                }
                else
                {
                    return Json(new { me = conexion });
                }
            }
            catch (Exception ex)
            {
                log.Error("eliminarMantenimientoPreventivo - GET(EXCEPTION):", ex);
                return Json(new { me = "Ocurrió un error al modificar" });
            }
        }

        [HttpPost]
        public JsonResult setearEdificio(EdificioBean edificio)
        {
            try
            {
                List<EdificioBean> llegadaSeteo = edificioDAO.SetearEdificio(edificio);
                return Json(new { llegadaSeteo });
            }
            catch (Exception ex)
            {
                log.Error("setearEdificio - GET(EXCEPTION):", ex);
                return Json(new { llegadaSeteo = "Ocurrió un error al eliminar" });
            }
        }
    }
}
